<?php
namespace src\controller;
/**
 * 单例设计模式
 * 私有化构造方法 共用一个实例化方法
 * Class Db
 * @package controller
 */
class Db
{

    /**
     * 私有化属性
     * @var
     */
    private static $instance;

    /**
     * @return mixed
     */
    static public function getInstance()
    {
        /**
         *  instanceof 判断php 变量是否是某个类的实例
         */
        if (!self::$instance instanceof self){
            self::$instance=new self();
        }
        return self::$instance;
//        return new self();
    }
    /**
     *私有化构造不发进行直接new
     * Db constructor.
     */
    protected function __construct()
    {

    }
    public function index()
    {
        echo "nihao\n";
    }

    /**
     * 私有化clone 方法就无法clone
     */
    protected function __clone()
    {
        // TODO: Implement __clone() method.
    }

    /**
     * 私有化虚拟化方法
     */
    protected function __wakeup()
    {
        // TODO: Implement __wakeup() method.
    }

}

/** @var Db $db */
$db = Db::getInstance();
$db1 = Db::getInstance();
var_dump($db);
var_dump($db1);
$db->index();
$db1->index();
